package views.uiViews;

import javax.swing.JFrame;

import java.awt.Container;

import javax.swing.JPanel;

import java.awt.Color;

import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JButton;

import controllers.uiControllers.PortalController;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import java.awt.Font;

import javax.swing.border.LineBorder;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.ImageIcon;
import javax.swing.SwingConstants;

import java.awt.Dimension;
import java.awt.SystemColor;
import java.util.HashMap;
import java.util.Map;

import javax.swing.JMenuItem;
import java.awt.GridBagLayout;
import java.awt.FlowLayout;
import java.awt.BorderLayout;

public class MainView  extends JFrame{
	private static final long serialVersionUID = 1L;
	public static JPanel Mainframe;
	public MainView() {
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		Mainframe = new JPanel();
		Mainframe.setMinimumSize(new Dimension(1500, 1000));
		Mainframe.setPreferredSize(new Dimension(2000, 1000));
		Mainframe.setBorder(new LineBorder(Color.ORANGE, 5, true));
		GroupLayout groupLayout = new GroupLayout(getContentPane());
		groupLayout.setHorizontalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addContainerGap()
					.addComponent(Mainframe, GroupLayout.PREFERRED_SIZE, 1003, GroupLayout.PREFERRED_SIZE)
					.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
		);
		groupLayout.setVerticalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addContainerGap()
					.addComponent(Mainframe, GroupLayout.PREFERRED_SIZE, 631, GroupLayout.PREFERRED_SIZE)
					.addContainerGap())
		);
		Mainframe.setLayout(new BorderLayout(0, 0));
		getContentPane().setLayout(groupLayout);
		
		
		final Map<JMenuItem, String> controllerInfo = new HashMap<JMenuItem, String>();
		
		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		
		JMenu mnZoek = new JMenu("Zoek");
		mnZoek.setPreferredSize(new Dimension(150, 0));
		mnZoek.setIcon(new ImageIcon(MainView.class.getResource("/Images/Search-icon.png")));
		mnZoek.setHorizontalAlignment(SwingConstants.CENTER);
		mnZoek.setFont(new Font("Sylfaen", Font.BOLD, 18));
		mnZoek.setBackground(SystemColor.textHighlight);
		menuBar.add(mnZoek);
		
	
		
		JMenu mnVoegToe = new JMenu("Voeg Toe");
		mnVoegToe.setPreferredSize(new Dimension(150, 0));
		mnVoegToe.setIcon(new ImageIcon(MainView.class.getResource("/Images/promotion_new.png")));
		mnVoegToe.setFont(new Font("Sylfaen", Font.BOLD, 18));
		mnVoegToe.setBackground(new Color(135, 206, 235));
		menuBar.add(mnVoegToe);
		

		
		JButton btnExit = new JButton("Afsluiten");
		btnExit.setHorizontalAlignment(SwingConstants.RIGHT);
		btnExit.setIcon(new ImageIcon(MainView.class.getResource("/Images/111905_24199_128_exit_icon.png")));
		menuBar.add(btnExit);
		btnExit.setFont(new Font("Sylfaen", Font.BOLD, 18));
		btnExit.setBackground(new Color(135, 206, 235));
		
		JButton btnTerugNaarHoofdscherm = new JButton("Home");
		btnTerugNaarHoofdscherm.setHorizontalAlignment(SwingConstants.RIGHT);
		btnTerugNaarHoofdscherm.setIcon(new ImageIcon(MainView.class.getResource("/Images/home-icon-hi.png")));
		menuBar.add(btnTerugNaarHoofdscherm);
		btnTerugNaarHoofdscherm.setFont(new Font("Sylfaen", Font.BOLD, 18));
		btnTerugNaarHoofdscherm.setBackground(new Color(135, 206, 235));
		btnTerugNaarHoofdscherm.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				Mainframe.removeAll();
				PortalController.showView();
			}
		});
		btnExit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				setVisible(false);
				dispose();
			}
		});
		
		//alle Menu Zoek Items
		
			JMenuItem mntmZoekPersoneel = new JMenuItem("Zoek Personeel");
		mntmZoekPersoneel.setFont(new Font("Sylfaen", Font.PLAIN, 16));
		mnZoek.add(mntmZoekPersoneel);
		
		JMenuItem mntmZoekEigenaars = new JMenuItem("Zoek Eigenaars");
		mntmZoekEigenaars.setFont(new Font("Sylfaen", Font.PLAIN, 16));
		mnZoek.add(mntmZoekEigenaars);
		
		JMenuItem mntmZoekMaatschappij = new JMenuItem("Zoek Maatschappij");
		mntmZoekMaatschappij.setFont(new Font("Sylfaen", Font.PLAIN, 16));
		mnZoek.add(mntmZoekMaatschappij);
		
		JMenuItem mntmZoekVliegtuigen = new JMenuItem("Zoek Vliegtuigen");
		mntmZoekVliegtuigen.setFont(new Font("Sylfaen", Font.PLAIN, 16));
		mnZoek.add(mntmZoekVliegtuigen);
		
		JMenuItem mntmZoekVluchten = new JMenuItem("Zoek Vluchten");
		mntmZoekVluchten.setFont(new Font("Sylfaen", Font.PLAIN, 16));
		mnZoek.add(mntmZoekVluchten);
		
		JMenuItem mntmZoekPassagier = new JMenuItem("Zoek Passagiers");
		mntmZoekPassagier.setFont(new Font("Sylfaen", Font.PLAIN, 16));
		mnZoek.add(mntmZoekPassagier);
		
		JMenuItem mntmZoekLuchthaven = new JMenuItem("Zoek Luchthaven");
		mntmZoekLuchthaven.setFont(new Font("Sylfaen", Font.PLAIN, 16));
		mnZoek.add(mntmZoekLuchthaven);
		
		JMenuItem mntmZoekParameters = new JMenuItem("Zoek Parameters");
		mntmZoekParameters.setFont(new Font("Sylfaen", Font.PLAIN, 16));
		mnZoek.add(mntmZoekParameters);
		
		
		
		controllerInfo.put(mntmZoekPersoneel, "searchControllers.ZoekPersoneelController-showView"); //Lieven Vandeperre C1025684 2013-11-30
		controllerInfo.put(mntmZoekEigenaars, "searchControllers.ZoekEigenaarController-showView"); //Benny Vermonden c1025695 2013-11-28
		controllerInfo.put(mntmZoekVliegtuigen, "searchControllers.ZoekVliegtuigController-showView"); // Thomas Leys c1026794  2013-11-28
		controllerInfo.put(mntmZoekVluchten, "updateControllers.UpdateVluchtController-showViewSearch");
//		controllerInfo.put(mntmZoekVluchten, "searchControllers.ZoekVluchtController-showView");
		controllerInfo.put(mntmZoekParameters, "searchControllers.ZoekParameterController-showView"); //Pieter Gielen c10251696 2013-11-30
		controllerInfo.put(mntmZoekMaatschappij, "searchControllers.ZoekMaatschappijController-showView");
		controllerInfo.put(mntmZoekPassagier, "searchControllers.ZoekPassagierController-showView"); //Jente Bosmans c1024555 2013-12-2
		controllerInfo.put(mntmZoekLuchthaven, "searchControllers.ZoekLuchthavenController-showView"); //Leen Van Pelt
		
		
		//Alle Voeg Toe Menu Items
		
		JMenuItem mntmParameterAdd = new JMenuItem("Voeg Parameter Toe");
		mntmParameterAdd.setFont(new Font("Sylfaen", Font.PLAIN, 16));
		mnVoegToe.add(mntmParameterAdd);
		
		JMenuItem mntmAddVliegtuig = new JMenuItem("Voeg Vliegtuig Toe");
		mntmAddVliegtuig.setFont(new Font("Sylfaen", Font.PLAIN, 16));
		mnVoegToe.add(mntmAddVliegtuig);
		
		JMenuItem mntmAddEigenaar = new JMenuItem("Voeg Eigenaar Toe");
		mntmAddEigenaar.setFont(new Font("Sylfaen", Font.PLAIN, 16));
		mnVoegToe.add(mntmAddEigenaar);
		
		JMenuItem mntmAddVlucht = new JMenuItem("Voeg Vlucht Toe");
		mntmAddVlucht.setFont(new Font("Sylfaen", Font.PLAIN, 16));
		mnVoegToe.add(mntmAddVlucht);
		
		JMenuItem mntmAddLuchthaven = new JMenuItem("Voeg Luchthaven Toe");
		mntmAddLuchthaven.setFont(new Font("Sylfaen", Font.PLAIN, 16));
		mnVoegToe.add(mntmAddLuchthaven);
		
		JMenuItem mntmAddPersoneel = new JMenuItem("Voeg Personeel Toe");
		mntmAddPersoneel.setFont(new Font("Sylfaen", Font.PLAIN, 16));
		mnVoegToe.add(mntmAddPersoneel);
		
		JMenuItem mntmAddMaatschappij = new JMenuItem("Voeg Maatschappij Toe");
		mntmAddMaatschappij.setFont(new Font("Sylfaen", Font.PLAIN, 16));
		mnVoegToe.add(mntmAddMaatschappij);
		
		controllerInfo.put(mntmAddVliegtuig, "createControllers.ToevoegenVliegtuigController-showView");//Leen Van Pelt 2013-11-20
		controllerInfo.put(mntmAddEigenaar, "createControllers.ToevoegenEigenaarController-showView");//Benny Vermonden c1025695 2013-11-20
		controllerInfo.put(mntmAddVlucht, "createControllers.ToevoegenVluchtController-showView");
		controllerInfo.put(mntmAddPersoneel, "createControllers.ToevoegenPersoneelController-showView");// Nick Bertels c1019387 2013-11-22
		controllerInfo.put(mntmAddMaatschappij, "createControllers.ToevoegenMaatschappijController-showView");
		controllerInfo.put(mntmParameterAdd, "createControllers.ToevoegenParameterController-showView");
		controllerInfo.put(mntmAddLuchthaven, "createControllers.ToevoegenLuchthavenController-showView");
		
		
//		Alle Update/Verwijder opties
		
		
		
		ActionListener listener = new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent evt) {
				Mainframe.removeAll();
				PortalController.handleView(controllerInfo.get(evt.getSource()));
			}
		};

		mntmZoekPersoneel.addActionListener(listener);
		mntmZoekEigenaars.addActionListener(listener);
		mntmZoekParameters.addActionListener(listener);
		mntmZoekVliegtuigen.addActionListener(listener);
		mntmZoekVluchten.addActionListener(listener);
		mntmZoekMaatschappij.addActionListener(listener);
		mntmZoekPassagier.addActionListener(listener);
		mntmZoekLuchthaven.addActionListener(listener);
		mntmAddEigenaar.addActionListener(listener);
		mntmAddMaatschappij.addActionListener(listener);
		mntmAddPersoneel.addActionListener(listener);
		mntmAddVliegtuig.addActionListener(listener);
		mntmAddVlucht.addActionListener(listener);
		mntmParameterAdd.addActionListener(listener);
		mntmAddLuchthaven.addActionListener(listener);
		
		
	}
	
	public void showView(JFrame x){
		Container y = x.getContentPane();
		Mainframe.removeAll();
		Mainframe.add(y);
		this.pack();
		this.revalidate();
		this.repaint();
	}
	
	public void removeView(JFrame x){
		Mainframe.remove(x.getContentPane());
		this.pack();
		this.revalidate();
		this.repaint();
	}
}
